/**
 * 通用防抖函数
 * @param {Function} func 执行函数
 * @param {Number} duration 延时
 * @returns 返回一个新的函数
 */
function debounce(func, duration = 300) {
    let timerId;
    return function(...args){
        clearTimeout(timerId);
        // 这里需要使用箭头函数,突破this的束缚
        timerId = setTimeout(()=>{
            // 所以此函数与正式执行时候的this环境一致
            func.apply(this, args);
        }, duration);
    }
}
// 比如改变窗口尺寸
const tt =debounce(test);
window.onresize = tt;

function test(params) {
    console.log(params);
}